Scroll to navigation

PTHREAD_ATTR_SETINHERITSCHED(3) Linux Programmer's Manual PTHREAD_ATTR_SETINHERITSCHED(3)

名前

pthread_attr_setinheritsched, pthread_attr_getinheritsched - スレッド属性オブジェクトの inherit scheduler 属性の設定/取得を行う

書式

#include <pthread.h>
int pthread_attr_setinheritsched(pthread_attr_t *attr,
                                 int inheritsched);
int pthread_attr_getinheritsched(pthread_attr_t *attr,
                                 int *inheritsched);

-pthread でコンパイルしてリンクする。

説明

pthread_attr_setinheritsched() 関数は、 attr が参照するスレッド属性オブジェクトの inherit scheduler 属性を inheritsched で指定された値に設定する。 inherit scheduler 属性により、スレッド属性オブジェクト attr を使って 作成されるスレッドが、呼び出したスレッドのスケジューリング属性を継承 するか、attr からスケジューリング属性を取得するかが決定される。

以下の値を inheritsched に指定できる。

attr を使って作成されたスレッドは、 スレッドを作成するスレッドからスケジューリング属性を継承する。 attr 内のスケジューリング属性は無視される。
attr を使って作成されたスレッドは、スレッド属性オブジェクトで 指定された値からスケジューリング属性を取得する。

新たに初期化されたスレッド属性オブジェクトの inherit scheduler 属性の デフォルト設定は PTHREAD_INHERIT_SCHED である。

pthread_attr_getinheritsched() は、 スレッド属性オブジェクト attr の inherit scheduler 属性を inheritsched が指すバッファに入れて返す。

返り値

成功すると、これらの関数は 0 を返す。 エラーの場合、0 以外のエラー番号を返す。

エラー

pthread_attr_setinheritsched() は以下のエラーで失敗する場合がある。

inheritsched に無効な値が指定された。

POSIX.1-2001 では、 pthread_attr_setinheritsched() に関して エラー ENOTSUP ("サポートされていない値を属性に設定しようとした") も追加で規定されている。

準拠

POSIX.1-2001.

バグ

glibc 2.8 の時点では、スレッド属性オブジェクトが pthread_attr_init(3) を使って初期化された場合、 スレッド属性オブジェクトのスケジューリングポリシーが SCHED_OTHER に、 スケジューリング優先度が 0 に設定される。一方、その後 inherit scheduling 属性に PTHREAD_EXPLICIT_SCHED が設定されると、このスレッ ド属性オブジェクトを使って作成されたスレッドでは、スレッドを作成するス レッドのスケジューリング属性が間違って継承されてしまう。 pthread_create(3) を呼び出す前にスケジューリングポリシー属性か スケジューリング優先度属性のどちらかが明示的に設定された場合には、 このバグは発生しない。

pthread_setschedparam(3) を参照。

関連項目

sched_setscheduler(2), pthread_attr_init(3), pthread_attr_setschedparam(3), pthread_attr_setschedpolicy(3), pthread_create(3), pthread_setschedparam(3), pthread_setschedprio(3), pthreads(7)

この文書について

この man ページは Linux man-pages プロジェクトのリリース 3.51 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。

2012-03-15 Linux